/**
 * @Description: 自动化注册组件 同步/异步
 * @author dogfaec
 * @date 2024/05/28
 */
import { type App, defineAsyncComponent } from 'vue'
// 默认一个文件夹文件自动注册全局组件
const install = (app: App) => {
  // import.meta.glob是vite的api
  // import.meta.globEager新的vite版本已弃用
  // 遍历组件模块实现自动注册
  // @ts-ignore
  const components = import.meta.glob('./*/index.vue')
  for (const [key, value] of Object.entries(components)) {
    // 拼接组件注册的 name
    const componentName = 'com-crud-' + key.replace('./', '').split('/')[0]
    // 通过 defineAsyncComponent 异步导入指定路径下的组件
    // @ts-ignore
    app.component(componentName, defineAsyncComponent(value))
  }
}

export default {
  install
}
